// 引入 echarts 核心库
import * as echarts from 'echarts/core'
import * as ecStat from 'echarts-stat'
echarts.registerTransform(ecStat.transform.regression)
// 引入柱状图、折线图、饼图等图表
import { BarChart, LineChart, PieChart, ScatterChart } from 'echarts/charts'

// 引入图例、工具箱等组件
import {
  LegendComponent,
  ToolboxComponent,
  DataZoomComponent,
  VisualMapComponent,
} from 'echarts/components'
// 引入标题、提示框、网格等组件
import {
  TitleComponent,
  TooltipComponent,
  GridComponent,
  // 数据集组件
  DatasetComponent,
  // 内置数据转换器组件 (filter, sort)
  TransformComponent,
} from 'echarts/components'
// 引入标签布局、全局过渡动画等特性
import { LabelLayout, UniversalTransition } from 'echarts/features'
// 引入 Canvas 渲染器
import { CanvasRenderer } from 'echarts/renderers'
// 引入系列类型的定义
import type {
  // 系列类型的定义后缀都为 SeriesOption
  BarSeriesOption,
  LineSeriesOption,
} from 'echarts/charts'
// 引入组件类型的定义
import type {
  // 组件类型的定义后缀都为 ComponentOption
  TitleComponentOption,
  TooltipComponentOption,
  GridComponentOption,
  DatasetComponentOption,
} from 'echarts/components'
// 引入 ComposeOption 类型
import type { ComposeOption } from 'echarts/core'

// 通过 ComposeOption 来组合出一个只有必须组件和图表的 Option 类型
type ECOption = ComposeOption<
  | BarSeriesOption
  | LineSeriesOption
  | TitleComponentOption
  | TooltipComponentOption
  | GridComponentOption
  | DatasetComponentOption
>

// 注册必须的组件
echarts.use([
  // 标题组件
  TitleComponent,
  // 提示组件
  TooltipComponent,
  // 网格组件
  GridComponent,
  // 数据集组件
  DatasetComponent,
  // 转换组件
  TransformComponent,
  // 图例组件
  LegendComponent,
  // 工具箱组件
  ToolboxComponent,
  // 饼图
  PieChart,
  // 柱状图
  BarChart,
  // 折线图
  DataZoomComponent,
  LineChart,
  //散点图
  ScatterChart,
  // 视觉映射组件
  VisualMapComponent,

  // 标签布局
  LabelLayout,
  // 通用过渡
  UniversalTransition,
  // 画布渲染器
  CanvasRenderer,
])

// 导出 echarts 实例（值）
export { echarts }
export type { ECOption }
